package com.jy.wms.service;

import com.jy.wms.common.UUIDUtils;
import com.jy.wms.common.annotions.BaseServiceDescribe;
import com.jy.wms.common.base.BaseService;
import com.jy.wms.common.base.ServiceException;
import com.jy.wms.pojo.WmsColumnName;
import com.jy.wms.dao.WmsColumnNameMapper;
import org.springframework.stereotype.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.UUID;

/**
    * @ClassName: WmsColumnNameService.java
    * @Description: TODO(这里用一句话描述这个类的作用)
    * @Author Jane
    * @Date Tue Dec 26 14:00:42 CST 2017
    */

    @Service
    public class WmsColumnNameService extends BaseService<WmsColumnNameMapper,WmsColumnName> {

     /**
     * 新增自定义列名
     * @param list 实体对象集合
      *@param sshzid 所属货主Id
      *@param ckid 所属仓库ID
     * @return int
     */
     @BaseServiceDescribe(moduleName = "自定义列名",btnName = "新增自定义列名")
     @Transactional
    public void baseInsert( List<WmsColumnName> list,String sshzid,String ckid){
         //遍历所有列信息
         for(WmsColumnName name:list){
            Integer count= dao.countColumnIsAdd(sshzid,ckid,name.getZcolumn());//判断此列名是否已经定义列名
            if(count==0){
                //没有定义则新增
                name.setCkid(ckid);
                name.setSshzid(sshzid);
                name.setId(UUIDUtils.uuid());
                if(name.getZcolumn().equals("ckzd1")||name.getZcolumn().equals("ckzd2")||name.getZcolumn().equals("ckzd3")||name.getZcolumn().equals("ckzd4")||name.getZcolumn().equals("ckzd5")){
                    name.setType("0");
                }else{
                    name.setType("1");
                }
                dao.baseInsert(name);
            }else{
                //有一列已经定义则抛出异常只能修改不能新增
                throw new RuntimeException("已经有列自定义列名不能重复定义");
            }
         }
    }

   /**
    * 插入一条记录（匹配有值的字段）
    * @param entity 实体对象
    * @return int
    */
    public Integer baseInsertSelective( WmsColumnName entity){
         return dao.baseInsertSelective( entity);
    }

   /**
    * 删除（根据主键ID删除）
    * @param id 主键
    * @return int
    */
    public Integer baseDeleteByPrimaryKey( String id){
         return dao.baseDeleteByPrimaryKey( id);
    }

   /**
    * 删除（根据ID 批量删除）
    * @param idList 主键ID列表
    * @return int
    */
    public Integer baseDeleteBathPrimaryKeys( List<String> idList){
         return dao.baseDeleteBathPrimaryKeys( idList );
    }

    /**
    * 分页查询
    * @param sshzid 所属货主Id
     *@param ckid 所属仓库Id
    * @return Page<WmsColumnName>
    */
    public List<WmsColumnName> baseSelectPage(String sshzid,String ckid){
        return dao.baseSelectPage(sshzid,ckid);
    }

   /**
    * 查询（根据主键ID查询）
    * @param id 主键ID
    * @return WmsColumnName
    */
    public WmsColumnName baseSelectByPrimaryKey( String id ){
         return dao.baseSelectByPrimaryKey( id );
    }

   /**
    * 查询（根据ID 批量查询）
    * @param idList 主键ID列表
    * @return list
    */
    public Integer baseSelectBathPrimaryKeys( List<WmsColumnName> idList ){
         return dao.baseSelectBathPrimaryKeys( idList );
    }

   /**
    *修改_Jane （匹配有值的字段）
    * @param entity 主键ID列表
    * @return int
    */
   @BaseServiceDescribe(moduleName = "自定义列名",btnName = "修改自定义列名")
    public void baseUpdateByPrimaryKeySelective( WmsColumnName entity)throws ServiceException{
        Integer success=dao.baseUpdateByPrimaryKeySelective(entity);
        if(success<=0){
            throw new ServiceException("修改自定义列名失败");
        }
    }

   /**
    *修改（根据主键ID修改）
    * @param entity 主键ID列表
    * @return int
    */
    public Integer baseUpdateByPrimaryKey( WmsColumnName entity){
         return dao.baseUpdateByPrimaryKey( entity);
    }
}
